﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Aeroporto.modelo;
using Aeroporto.bd;
using Aeroporto.controle;
using System.Collections;

namespace Aeroporto.visao
{
    public partial class formCadastroCompanhia : Form
    {
        private CompanhiaControl companhia_control = new CompanhiaControl();

        public formCadastroCompanhia()
        {
            InitializeComponent();
        }

        private void formCompanhia_Load(object sender, EventArgs e)
        {
            lista_dados();
            limpar();
        }

        private void lblNomeFantasia_Click(object sender, EventArgs e)
        {

        }

        private void atualiza_campos()
        {
           
            int linha = grid_companhia.CurrentRow.Index;

            txtSigla.Text = grid_companhia[0, linha].Value.ToString();
            txtNome.Text = grid_companhia[1, linha].Value.ToString();
            txtNomeFantasia.Text = grid_companhia[2, linha].Value.ToString();
            txtPais.Text = grid_companhia[3, linha].Value.ToString();
            txtSenha.Text = grid_companhia[4, linha].Value.ToString();
        }

        private void lista_dados()
        {
            try
            {
                grid_companhia.DataSource = companhia_control.lista_dados("companhia");
                grid_companhia.Columns["sigla"].HeaderText = "Sigla";
                grid_companhia.Columns["nome"].HeaderText = "Nome";
                grid_companhia.Columns["nome_fantasia"].HeaderText = "Nome Fantasia";
                grid_companhia.Columns["pais"].HeaderText = "Pais";
                grid_companhia.Columns["senha"].HeaderText = "Senha";
                atualiza_campos();
                grid_companhia.ReadOnly = true;

            }
            catch (Exception erro)
            {
                MessageBox.Show("Erro na listagem do Grid: " + erro);
            }

        }


        private void btnInserir_Click(object sender, EventArgs e)
        {
            string pass = Funcoes.GetMD5Hash(txtSenha.Text);

            MyMessageBox message_box = companhia_control.valida_insert_companhia(txtSigla.Text,txtNome.Text,txtNomeFantasia.Text,txtPais.Text,pass);

            MessageBox.Show(message_box.String1,message_box.String2);

            switch(message_box.String2){
                case "Companhia já existente":
                    txtSigla.Focus();
                    lblInformacao.Text = "Companhia já existente";
                    break;

                case "Cadastrado":
                    limpar();

                    lista_dados();

                    break;
            }
        }


        private void limpar()
        {
            txtSigla.Text = "";
            txtNomeFantasia.Text = "";
            txtNome.Text = "";
            txtSenha.Text = "";
            txtPais.Text = "";
        }

        private void grid_companhia_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
           // atualiza_campos();
        }

        private void formCadastroCompanhia_FormClosed(object sender, FormClosedEventArgs e)
        {
        }

        private void btnDeletar_Click(object sender, EventArgs e)
        {
            if (txtSigla.Text == "" && txtNome.Text == "" && txtNomeFantasia.Text == "" &&
                txtPais.Text == "")
            {
                MessageBox.Show("Escolha uma companhia na tabela ao lado!");
                return;
            }
            else
            {
                ArrayList chaves_primarias = new ArrayList();

                foreach (DataGridViewRow r in grid_companhia.SelectedRows)//pega as linhas selecionadas
                {
                    chaves_primarias.Add(r.Cells[0].Value.ToString());//a PK está na célula 0
                    
                }

                if (MessageBox.Show("Tem certeza que deseja excluir " + chaves_primarias.Count + " reservas", "Reserva", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)//exibe mensagem para confirmar exclusão
                {
                    MyMessageBox message_box = companhia_control.exclui_companhia(chaves_primarias);  //exclui a companhia cujo o código está no TextEdit de código
                    MessageBox.Show(message_box.String1, message_box.String2);                    //mostra mensagem se excluiu ou não
                    lista_dados();                                                                //atualiza os dados do grid
                }
            }
        }

        private void btnPesquisar_Click_1(object sender, EventArgs e)
        {
            grid_companhia.DataSource = companhia_control.pesquisar_nome(txtPesquisa.Text);
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            string chave_antiga = grid_companhia[0, grid_companhia.CurrentCell.RowIndex].Value.ToString();
            MyMessageBox mb = companhia_control.valida_update_companhia(
                txtSigla.Text, txtNome.Text, txtNomeFantasia.Text, txtPais.Text, txtSenha.Text, chave_antiga);
            MessageBox.Show(mb.String1, mb.String2);//exibe mensagem dizendo se foi ou não atualizado os dados
            lista_dados();//atualiza os dados do grid
        }

        private void button1_Click(object sender, EventArgs e)
        {
            txtNome.Text = "";
            txtNomeFantasia.Text = "";
            txtPais.Text = "";
            txtPesquisa.Text = "";
            txtSenha.Text = "";
            txtSigla.Text = "";
        }

        private void grid_companhia_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            atualiza_campos();
        }
    }
}
